<?php
class AclExtended extends AppModel {
	var $name = 'AclExtended';
	var $useTable = false;
	var $actsAs = array(
		'ExtendedConfiguration'	=> array(
			'configFolder'		=>	'security',
			'cacheName'		=> 'security_configs',
			'names'		=> array(
				'non_plugin', 
				'users',
				'infos',
				'galleries',
				'static_pages',
				'products',
				'contacts',
				'sciences',
				'features',
				'knowledge_investments',
				'news',
				'recruitments',
				'recruits',
				'inviters',
			)
		),
	);
	
	/*
	 * Phương thức được sử dụng để kiểm tra quyền truy cập của người dùng
	 * */
	function checkAuth($params, $configs){
		// Trong trường hợp sử dụng plugin
		if (isset($params['plugin']) && !empty($params['plugin'])) {
			if (
				// Trường hợp mọi controller trong plugin (Không quan tâm controller)
				(
					isset($configs[$params['plugin']])
					&& !is_array($configs[$params['plugin']]) 
					&& $configs[$params['plugin']]
				)
				
				// Trường hợp mọi action trong controller
				|| (
					isset($configs[$params['plugin']][$params['controller']]) 
					&& !is_array($configs[$params['plugin']][$params['controller']]) 
					&& $configs[$params['plugin']][$params['controller']]
				)
				
				// Trường hợp một action trong controller cụ thể
				|| (
					isset($configs[$params['plugin']][$params['controller']][$params['action']]) 
					&& !is_array($configs[$params['plugin']][$params['controller']][$params['action']]) 
					&& $configs[$params['plugin']][$params['controller']][$params['action']]
				)
			) {
				return true;
			}
		} else {
			if (
				(
					isset($configs['non_plugin'][$params['controller']]) 
					&& !is_array($configs['non_plugin'][$params['controller']]) 
					&& $configs['non_plugin'][$params['controller']]
				)
				
				// Trường hợp một action trong controller cụ thể
				|| (
					isset($configs['non_plugin'][$params['controller']][$params['action']]) 
					&& !is_array($configs['non_plugin'][$params['controller']][$params['action']]) 
					&& $configs['non_plugin'][$params['controller']][$params['action']]
				)
			) {
				return true;
			}
		}
		
		return false;
	}
}
?>